//优化navigateTo,n
export function perfectNavigateTo(Object) {
  let pages = getCurrentPages() //获取当前页面js里面的pages里的所有信息。
  if (pages.length >= 9) {
    uni.redirectTo(Object)
  } else {
    uni.navigateTo(Object)
  }
}
/**
 * 数字转换为 千分位格式
 * @param {*} num  原数字
 * @param {*} addDecimal 是否添加 .00去保留2位小数 默认不加
 * @returns
 */
export function numFormatThousands(num, addDecimal = false) {
  if (!num || num == 0) {
    return addDecimal ? '0.00' : '0'
  } else {
    let negative = false
    if (num < 0) {
      negative = true
    }
    // 处理整数位
    let numInt = num
    // 取整数位
    let integer = Math.abs(parseInt(numInt))
    // 整数位增加千分位标记 18321 => 18,321
    let integerFormat = String(integer).replace(/\B(?=(\d{3})+$)/g, ',')

    // 处理小数位
    let str = String(num)
    let decimalFormat = ''
    if (str.indexOf('.') >= 0) {
      decimalFormat = '.' + str.split('.')[1]
    }

    if (negative) {
      return '-' + integerFormat + decimalFormat
    }
    return integerFormat + decimalFormat
  }
}

export function $parent(name = undefined) {
  let parent = this.$parent
  // 通过while历遍，这里主要是为了H5需要多层解析的问题
  while (parent) {
    // 父组件
    if (parent.$options && parent.$options.name !== name) {
      // 如果组件的name不相等，继续上一级寻找
      parent = parent.$parent
    } else {
      return parent
    }
  }
  return false
}

export function $uGetRect(selector, all) {
  return new Promise((resolve) => {
    uni
      .createSelectorQuery()
      .in(this)
      [all ? 'selectAll' : 'select'](selector)
      .boundingClientRect((rect) => {
        if (all && Array.isArray(rect) && rect.length) {
          resolve(rect)
        }
        if (!all && rect) {
          resolve(rect)
        }
      })
      .exec()
  })
}
